#include "../Graphic/Graphic.h"

/* Die Max. Anzahl von Entity's*/
#define Entity_Max 1024


#ifndef ENTITY_H
#define ENTITY_H 1

extern short int E_Timer;

/* Entity struktur */
struct sEntity {
    /* Nur für Network */
    unsigned short int Num;

    /* ID was es ist */
    unsigned short int ID;

    /* Aktuelle Position */
    float X;
    float Y;
    float Z;

    /* Velocity */
    float velX;
    float velY;
    float velZ;

    /* Welche Animation*/
    int Animation;
    /* Welche er geblittet hat */
    int Animation_Num;

    /* Fuktion zu berechnung */
    unsigned short int Process;
    /* Leben */
    unsigned short int Live;
};

struct sEntity_Function {
    void (*Function)(struct sEntity *Obj);
    void (*Graphic)(struct sEntity *Obj);
};

/* Start stuff */
void Entity_Init();

/* Null Pointer setzten */
void Entity_None( struct sEntity *Obj );

/* Gibt Entity zurück */
struct sEntity *Entity_Get( int iN );

/* Erstellen eines Obj */
int Entity_Create(int X, int Y, int Live, int iID);
void Entity_AddType(int iID, void (*iFunction)(struct sEntity *Obj), void (*iGraphic)(struct sEntity *Obj));

/* Löschen eines Entity's OHNE effekte */
void Entity_Remove( struct sEntity *Obj );

void Entity_Process();

void Entity_Process_Graphic();

#endif // ENTITY_H
